/*
 * Copyright (c) 2011 yang hui <yanghui1986527@gmail.com>
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public
 * License v2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public
 * License along with this program; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 021110-1307, USA.
 */

package org.zxstudio.encrypt.utils;

import java.io.File;

import android.util.Log;

public class Constant {
	private static final String TAG = "Constant";

	public static final String SDCARD_ROOT_PATH = "/mnt/sdcard/";
	public static final String ENCRYPT_ROOT_PATH = "/mnt/sdcard/.an/";
	public static final int RESULT_CHG_FILEEXPLORE_VIEW = 1000;
	public static final int DOC_TYPE_UNKNOWN = 0;
	public static final int DOC_TYPE_DOC = 1;
	public static final int DOC_TYPE_XLS = 2;
	public static final int DOC_TYPE_PPT = 3;
	public static final int DOC_TYPE_PDF = 4;
	public static final int DOC_TYPE_TXT = 5;

	public static final int TYPE_FILE = 1;
	public static final int TYPE_FOLDER = 2;
	public static final int TYPE_CHILD = 3;
	
	public static final int IMAGE = 1;
	public static final int VIDEO = 2;

	public static String getParentPath(String path) {
		if (path == null) {
			return SDCARD_ROOT_PATH;
		}
		String args [];
		StringBuilder sb = null;
		if (path.endsWith("/")) {
			args = path.split("/");
			if (args != null && args.length >= 2) {
				sb = new StringBuilder();
				for (int i = 0 ; i < args.length -1 ; i++) {
					sb.append(args[i]);
					sb.append("/");
				}
			}
		}
		if (sb == null) {
			sb = new StringBuilder();
			sb.append(SDCARD_ROOT_PATH);
		}
		return sb.toString();
	}
	/**
	 * 
	 * getMIMEType: Get the MIME Types from the file name.
	 * 
	 * @param filename
	 *            The name of the file.
	 * @return mimetype the MIME Type of the file.
	 * @throws
	 */
	public static String getMIMEType(File file) {
		Log.i(TAG, "getMIMEType");
		String type = "*/*";

		String name = file.getName();
		int dotIndex = name.lastIndexOf(".");
		if (dotIndex < 0) {
			return type;
		}

		String end = name.substring(name.lastIndexOf(".") + 1, name.length())
				.toLowerCase();
		if (end.equals(""))
			return type;
		for (int i = 0; i < MIME_MapTable.length; i++) {
			if (end.equals(MIME_MapTable[i][0]))
				type = MIME_MapTable[i][1];
		}

		return type;
	}

	/**
	 * The Table of MIME Types
	 */
	public static final String[][] MIME_MapTable = {
			// {后缀名， MIME类型}
			{ "3gp", "video/3gpp" }, { "aab", "application/x-authoware-bin" },
			{ "aam", "application/x-authoware-map" },
			{ "aas", "application/x-authoware-seg" },
			{ "ai", "application/postscript" }, { "aif", "audio/x-aiff" },
			{ "aifc", "audio/x-aiff" }, { "aiff", "audio/x-aiff" },
			{ "als", "audio/X-Alpha5" }, { "amc", "application/x-mpeg" },
			{ "ani", "application/octet-stream" },
			{ "apk", "application/vnd.android.package-archive" },
			{ "asc", "text/plain" }, { "asd", "application/astound" },
			{ "asf", "video/x-ms-asf" }, { "asn", "application/astound" },
			{ "asp", "application/x-asap" }, { "asx", "video/x-ms-asf" },
			{ "au", "audio/basic" }, { "avb", "application/octet-stream" },
			{ "avi", "video/x-msvideo" }, { "awb", "audio/amr-wb" },
			{ "bcpio", "application/x-bcpio" },
			{ "bin", "application/octet-stream" },
			{ "bld", "application/bld" }, { "bld2", "application/bld2" },
			{ "bmp", "image/bmp" }, { "bpk", "application/octet-stream" },
			{ "bz2", "application/x-bzip2" }, { "c", "text/x-csrc" },
			{ "cpp", "text/x-c++src" }, { "cal", "image/x-cals" },
			{ "ccn", "application/x-cnc" }, { "cco", "application/x-cocoa" },
			{ "cdf", "application/x-netcdf" },
			{ "cgi", "magnus-internal/cgi" }, { "chat", "application/x-chat" },
			{ "class", "application/octet-stream" },
			{ "clp", "application/x-msclip" }, { "cmx", "application/x-cmx" },
			{ "co", "application/x-cult3d-object" },
			{ "cod", "image/cis-cod" }, { "cpio", "application/x-cpio" },
			{ "cpt", "application/mac-compactpro" },
			{ "crd", "application/x-mscardfile" },
			{ "csh", "application/x-csh" }, { "csm", "chemical/x-csml" },
			{ "csml", "chemical/x-csml" }, { "css", "text/css" },
			{ "cur", "application/octet-stream" }, { "dcm", "x-lml/x-evm" },
			{ "dcr", "application/x-director" }, { "dcx", "image/x-dcx" },
			{ "dhtml", "text/html" }, { "dir", "application/x-director" },
			{ "dll", "application/octet-stream" },
			{ "dmg", "application/octet-stream" },
			{ "dms", "application/octet-stream" },
			{ "doc", "application/msword" }, { "dot", "application/x-dot" },
			{ "dvi", "application/x-dvi" }, { "dwf", "drawing/x-dwf" },
			{ "dwg", "application/x-autocad" },
			{ "dxf", "application/x-autocad" },
			{ "dxr", "application/x-director" },
			{ "ebk", "application/x-expandedbook" },
			{ "emb", "chemical/x-embl-dl-nucleotide" },
			{ "embl", "chemical/x-embl-dl-nucleotide" },
			{ "eps", "application/postscript" }, { "eri", "image/x-eri" },
			{ "es", "audio/echospeech" }, { "esl", "audio/echospeech" },
			{ "etc", "application/x-earthtime" }, { "etx", "text/x-setext" },
			{ "evm", "x-lml/x-evm" }, { "evy", "application/x-envoy" },
			{ "exe", "application/octet-stream" },
			{ "fh4", "image/x-freehand" }, { "fh5", "image/x-freehand" },
			{ "fhc", "image/x-freehand" }, { "fif", "image/fif" },
			{ "fm", "application/x-maker" }, { "fpx", "image/x-fpx" },
			{ "fvi", "video/isivideo" },
			{ "gau", "chemical/x-gaussian-input" },
			{ "gca", "application/x-gca-compressed" },
			{ "gdb", "x-lml/x-gdb" }, { "gif", "image/gif" },
			{ "gps", "application/x-gps" }, { "gtar", "application/x-gtar" },
			{ "gz", "application/x-gzip" }, { "h", "text/x-chdr" },
			{ "hdf", "application/x-hdf" }, { "hdm", "text/x-hdml" },
			{ "hdml", "text/x-hdml" }, { "hlp", "application/winhlp" },
			{ "hqx", "application/mac-binhex40" }, { "htm", "text/html" },
			{ "html", "text/html" }, { "hts", "text/html" },
			{ "ice", "x-conference/x-cooltalk" },
			{ "ico", "application/octet-stream" }, { "ief", "image/ief" },
			{ "ifm", "image/gif" }, { "ifs", "image/ifs" },
			{ "imy", "audio/melody" }, { "ins", "application/x-NET-Install" },
			{ "ips", "application/x-ipscript" },
			{ "ipx", "application/x-ipix" }, { "it", "audio/x-mod" },
			{ "itz", "audio/x-mod" }, { "ivr", "i-world/i-vrml" },
			{ "j2k", "image/j2k" },
			{ "jad", "text/vnd.sun.j2me.app-descriptor" },
			{ "jam", "application/x-jam" }, { "java", "application/x-java" },
			{ "jar", "application/java-archive" },
			{ "jnlp", "application/x-java-jnlp-file" },
			{ "jpe", "image/jpeg" }, { "jpeg", "image/jpeg" },
			{ "jpg", "image/jpeg" }, { "jpz", "image/jpeg" },
			{ "js", "application/x-javascript" }, { "jwc", "application/jwc" },
			{ "kjx", "application/x-kjx" }, { "lak", "x-lml/x-lak" },
			{ "latex", "application/x-latex" },
			{ "lcc", "application/fastman" },
			{ "lcl", "application/x-digitalloca" },
			{ "lcr", "application/x-digitalloca" },
			{ "lgh", "application/lgh" },
			{ "lha", "application/octet-stream" }, { "lml", "x-lml/x-lml" },
			{ "lmlpack", "x-lml/x-lmlpack" }, { "lsf", "video/x-ms-asf" },
			{ "lsx", "video/x-ms-asf" }, { "lzh", "application/x-lzh" },
			{ "m13", "application/x-msmediaview" },
			{ "m14", "application/x-msmediaview" }, { "m15", "audio/x-mod" },
			{ "m3u", "audio/x-mpegurl" }, { "m3url", "audio/x-mpegurl" },
			{ "ma1", "audio/ma1" }, { "ma2", "audio/ma2" },
			{ "ma3", "audio/ma3" }, { "ma5", "audio/ma5" },
			{ "man", "application/x-troff-man" },
			{ "map", "magnus-internal/imagemap" },
			{ "mbd", "application/mbedlet" },
			{ "mct", "application/x-mascot" },
			{ "mdb", "application/x-msaccess" }, { "mdz", "audio/x-mod" },
			{ "me", "application/x-troff-me" }, { "mel", "text/x-vmel" },
			{ "mi", "application/x-mif" }, { "mid", "audio/midi" },
			{ "midi", "audio/midi" }, { "mif", "application/x-mif" },
			{ "mil", "image/x-cals" }, { "mio", "audio/x-mio" },
			{ "mmf", "application/x-skt-lbs" }, { "mng", "video/x-mng" },
			{ "mny", "application/x-msmoney" },
			{ "moc", "application/x-mocha" },
			{ "mocha", "application/x-mocha" }, { "mod", "audio/x-mod" },
			{ "mof", "application/x-yumekara" },
			{ "mol", "chemical/x-mdl-molfile" },
			{ "mop", "chemical/x-mopac-input" }, { "mov", "video/quicktime" },
			{ "movie", "video/x-sgi-movie" }, { "mp2", "audio/x-mpeg" },
			{ "mp3", "audio/x-mpeg" }, { "mp4", "video/mp4" },
			{ "mpc", "application/vnd.mpohun.certificate" },
			{ "mpe", "video/mpeg" }, { "mpeg", "video/mpeg" },
			{ "mpg", "video/mpeg" }, { "mpg4", "video/mp4" },
			{ "mpga", "audio/mpeg" },
			{ "mpn", "application/vnd.mophun.application" },
			{ "mpp", "application/vnd.ms-project" },
			{ "mps", "application/x-mapserver" }, { "mrl", "text/x-mrml" },
			{ "mrm", "application/x-mrm" }, { "ms", "application/x-troff-ms" },
			{ "mts", "application/metastream" },
			{ "mtx", "application/metastream" },
			{ "mtz", "application/metastream" },
			{ "mzv", "application/metastream" }, { "nar", "application/zip" },
			{ "nbmp", "image/nbmp" }, { "nc", "application/x-netcdf" },
			{ "ndb", "x-lml/x-ndb" }, { "ndwn", "application/ndwn" },
			{ "nif", "application/x-nif" }, { "nmz", "application/x-scream" },
			{ "nokia-op-logo", "image/vnd.nok-oplogo-color" },
			{ "npx", "application/x-netfpx" }, { "nsnd", "audio/nsnd" },
			{ "nva", "application/x-neva1" }, { "oda", "application/oda" },
			{ "oom", "application/x-AtlasMate-Plugin" },
			{ "pac", "audio/x-pac" }, { "pae", "audio/x-epac" },
			{ "pan", "application/x-pan" },
			{ "pbm", "image/x-portable-bitmap" }, { "pcx", "image/x-pcx" },
			{ "pda", "image/x-pda" }, { "pdb", "chemical/x-pdb" },
			{ "pdf", "application/pdf" }, { "pfr", "application/font-tdpfr" },
			{ "pgm", "image/x-portable-graymap" }, { "pict", "image/x-pict" },
			{ "pm", "application/x-perl" }, { "pmd", "application/x-pmd" },
			{ "png", "image/png" }, { "pnm", "image/x-portable-anymap" },
			{ "pnz", "image/png" }, { "pot", "application/vnd.ms-powerpoint" },
			{ "ppm", "image/x-portable-pixmap" },
			{ "pps", "application/vnd.ms-powerpoint" },
			{ "ppt", "application/vnd.ms-powerpoint" },
			{ "pqf", "application/x-cprplayer" },
			{ "pqi", "application/cprplayer" }, { "prc", "application/x-prc" },
			{ "proxy", "application/x-ns-proxy-autoconfig" },
			{ "ps", "application/postscript" },
			{ "ptlk", "application/listenup" },
			{ "pub", "application/x-mspublisher" },
			{ "pvx", "video/x-pv-pvx" }, { "qcp", "audio/vnd.qcelp" },
			{ "qt", "video/quicktime" }, { "qti", "image/x-quicktime" },
			{ "qtif", "image/x-quicktime" },
			{ "r3t", "text/vnd.rn-realtext3d" },
			{ "ra", "audio/x-pn-realaudio" },
			{ "ram", "audio/x-pn-realaudio" },
			{ "rar", "application/x-rar-compressed" },
			{ "ras", "image/x-cmu-raster" }, { "rdf", "application/rdf+xml" },
			{ "rf", "image/vnd.rn-realflash" }, { "rgb", "image/x-rgb" },
			{ "rlf", "application/x-richlink" },
			{ "rm", "audio/x-pn-realaudio" }, { "rmf", "audio/x-rmf" },
			{ "rmm", "audio/x-pn-realaudio" },
			{ "rmvb", "audio/x-pn-realaudio" },
			{ "rnx", "application/vnd.rn-realplayer" },
			{ "roff", "application/x-troff" },
			{ "rp", "image/vnd.rn-realpix" },
			{ "rpm", "audio/x-pn-realaudio-plugin" },
			{ "rt", "text/vnd.rn-realtext" }, { "rte", "x-lml/x-gps" },
			{ "rtf", "application/rtf" }, { "rtg", "application/metastream" },
			{ "rtx", "text/richtext" }, { "rv", "video/vnd.rn-realvideo" },
			{ "rwc", "application/x-rogerwilco" }, { "s3m", "audio/x-mod" },
			{ "s3z", "audio/x-mod" }, { "sca", "application/x-supercard" },
			{ "scd", "application/x-msschedule" },
			{ "sdf", "application/e-score" },
			{ "sea", "application/x-stuffit" }, { "sgm", "text/x-sgml" },
			{ "sgml", "text/x-sgml" }, { "sh", "application/x-sh" },
			{ "shar", "application/x-shar" },
			{ "shtml", "magnus-internal/parsed-html" },
			{ "shw", "application/presentations" }, { "si6", "image/si6" },
			{ "si7", "image/vnd.stiwap.sis" },
			{ "si9", "image/vnd.lgtwap.sis" },
			{ "sis", "application/vnd.symbian.install" },
			{ "sit", "application/x-stuffit" },
			{ "skd", "application/x-Koan" }, { "skm", "application/x-Koan" },
			{ "skp", "application/x-Koan" }, { "skt", "application/x-Koan" },
			{ "slc", "application/x-salsa" }, { "smd", "audio/x-smd" },
			{ "smi", "application/smil" }, { "smil", "application/smil" },
			{ "smp", "application/studiom" }, { "smz", "audio/x-smd" },
			{ "snd", "audio/basic" }, { "spc", "text/x-speech" },
			{ "spl", "application/futuresplash" },
			{ "spr", "application/x-sprite" },
			{ "sprite", "application/x-sprite" },
			{ "spt", "application/x-spt" },
			{ "src", "application/x-wais-source" },
			{ "stk", "application/hyperstudio" }, { "stm", "audio/x-mod" },
			{ "sv4cpio", "application/x-sv4cpio" },
			{ "sv4crc", "application/x-sv4crc" }, { "svf", "image/vnd" },
			{ "svg", "image/svg-xml" }, { "svh", "image/svh" },
			{ "svr", "x-world/x-svr" },
			{ "swf", "application/x-shockwave-flash" },
			{ "swfl", "application/x-shockwave-flash" },
			{ "t", "application/x-troff" },
			{ "tad", "application/octet-stream" }, { "talk", "text/x-speech" },
			{ "tar", "application/x-tar" }, { "taz", "application/x-tar" },
			{ "tbp", "application/x-timbuktu" },
			{ "tbt", "application/x-timbuktu" },
			{ "tcl", "application/x-tcl" }, { "tex", "application/x-tex" },
			{ "texi", "application/x-texinfo" },
			{ "texinfo", "application/x-texinfo" },
			{ "tgz", "application/x-tar" },
			{ "thm", "application/vnd.eri.thm" }, { "tif", "image/tiff" },
			{ "tiff", "image/tiff" }, { "tki", "application/x-tkined" },
			{ "tkined", "application/x-tkined" }, { "toc", "application/toc" },
			{ "toy", "image/toy" }, { "tr", "application/x-troff" },
			{ "trk", "x-lml/x-gps" }, { "trm", "application/x-msterminal" },
			{ "tsi", "audio/tsplayer" }, { "tsp", "application/dsptype" },
			{ "tsv", "text/tab-separated-values" },
			{ "tsv", "text/tab-separated-values" },
			{ "ttf", "application/octet-stream" },
			{ "ttz", "application/t-time" }, { "txt", "text/plain" },
			{ "ult", "audio/x-mod" }, { "ustar", "application/x-ustar" },
			{ "uu", "application/x-uuencode" },
			{ "uue", "application/x-uuencode" },
			{ "vcd", "application/x-cdlink" }, { "vcf", "text/x-vcard" },
			{ "vdo", "video/vdo" }, { "vib", "audio/vib" },
			{ "viv", "video/vivo" }, { "vivo", "video/vivo" },
			{ "vmd", "application/vocaltec-media-desc" },
			{ "vmf", "application/vocaltec-media-file" },
			{ "vmi", "application/x-dreamcast-vms-info" },
			{ "vms", "application/x-dreamcast-vms" },
			{ "vox", "audio/voxware" }, { "vqe", "audio/x-twinvq-plugin" },
			{ "vqf", "audio/x-twinvq" }, { "vql", "audio/x-twinvq" },
			{ "vre", "x-world/x-vream" }, { "vrml", "x-world/x-vrml" },
			{ "vrt", "x-world/x-vrt" }, { "vrw", "x-world/x-vream" },
			{ "vts", "workbook/formulaone" }, { "wav", "audio/x-wav" },
			{ "wax", "audio/x-ms-wax" }, { "wbmp", "image/vnd.wap.wbmp" },
			{ "web", "application/vnd.xara" }, { "wi", "image/wavelet" },
			{ "wis", "application/x-InstallShield" },
			{ "wm", "video/x-ms-wm" }, { "wma", "audio/x-ms-wma" },
			{ "wmd", "application/x-ms-wmd" },
			{ "wmf", "application/x-msmetafile" },
			{ "wml", "text/vnd.wap.wml" },
			{ "wmlc", "application/vnd.wap.wmlc" },
			{ "wmls", "text/vnd.wap.wmlscript" },
			{ "wmlsc", "application/vnd.wap.wmlscriptc" },
			{ "wmlscript", "text/vnd.wap.wmlscript" },
			{ "wmv", "audio/x-ms-wmv" }, { "wmx", "video/x-ms-wmx" },
			{ "wmz", "application/x-ms-wmz" }, { "wpng", "image/x-up-wpng" },
			{ "wpt", "x-lml/x-gps" }, { "wri", "application/x-mswrite" },
			{ "wrl", "x-world/x-vrml" }, { "wrz", "x-world/x-vrml" },
			{ "ws", "text/vnd.wap.wmlscript" },
			{ "wsc", "application/vnd.wap.wmlscriptc" },
			{ "wv", "video/wavelet" }, { "wvx", "video/x-ms-wvx" },
			{ "wxl", "application/x-wxl" }, { "x-gzip", "application/x-gzip" },
			{ "xar", "application/vnd.xara" }, { "xbm", "image/x-xbitmap" },
			{ "xdm", "application/x-xdma" }, { "xdma", "application/x-xdma" },
			{ "xdw", "application/vnd.fujixerox.docuworks" },
			{ "xht", "application/xhtml+xml" },
			{ "xhtm", "application/xhtml+xml" },
			{ "xhtml", "application/xhtml+xml" },
			{ "xla", "application/vnd.ms-excel" },
			{ "xlc", "application/vnd.ms-excel" },
			{ "xll", "application/x-excel" },
			{ "xlm", "application/vnd.ms-excel" },
			{ "xls", "application/vnd.ms-excel" },
			{ "xlt", "application/vnd.ms-excel" },
			{ "xlw", "application/vnd.ms-excel" }, { "xm", "audio/x-mod" },
			{ "xml", "text/xml" }, { "xmz", "audio/x-mod" },
			{ "xpi", "application/x-xpinstall" }, { "xpm", "image/x-xpixmap" },
			{ "xsit", "text/xml" }, { "xsl", "text/xml" },
			{ "xul", "text/xul" }, { "xwd", "image/x-xwindowdump" },
			{ "xyz", "chemical/x-pdb" }, { "yz1", "application/x-yz1" },
			{ "z", "application/x-compress" },
			{ "zac", "application/x-zaurus-zac" },
			{ "zip", "application/zip	" }, };

	/**
	 * 
	 * getFileIcon: Get the Icon from the file name.
	 * 
	 * @param file
	 *            Thefile.
	 * @return icon the ICON Type of the file.
	 * @throws
	 */
	public static String getFileIcon(File file) {
		Log.i(TAG, "getFileIcon");

		String icon_folder = "icon_folder";
		String icon_folder_spec = "icon_toolbar_home";
		String icon_file = "icon_file";

		if (file.isDirectory()) {
			File f[] = file.listFiles();
			if (f != null) {
				for (File f1 : f) {
					if (f1.isDirectory()) {
						return icon_folder_spec;
					}
				}
			}

			return icon_folder;
		} else if (file.isFile()) {
			String name = file.getName();
			int dotIndex = name.lastIndexOf(".");
			if (dotIndex < 0) {
				return icon_file;
			}

			String end = name.substring(name.lastIndexOf(".") + 1,
					name.length()).toLowerCase();
			if (end.equals(""))
				return icon_file;
			if (end.equals("apk"))
				return null;
			for (int i = 0; i < ICON_MapTable.length; i++) {
				if (end.equals(ICON_MapTable[i][0]))
					icon_file = ICON_MapTable[i][1];
			}
			return icon_file;
		} else {
			return icon_file;
		}

	}
	/**
	 * 获得文件的图标
	 * @param file
	 * @return
	 */
	public static String getFileIcon(String name) {
		Log.i(TAG, "getFileIcon");

		String icon_folder = "icon_folder";
		String icon_folder_spec = "icon_toolbar_home";
		String icon_file = "icon_file";

			int dotIndex = name.lastIndexOf(".");
			if (dotIndex < 0) {
				return icon_file;
			}
			String end = name.substring(name.lastIndexOf(".") + 1,
					name.length()).toLowerCase();
			if (end.equals(""))
				return icon_file;
			if (end.equals("apk"))
				return null;
			for (int i = 0; i < ICON_MapTable.length; i++) {
				if (end.equals(ICON_MapTable[i][0]))
					icon_file = ICON_MapTable[i][1];
			}
			return icon_file;
	}
	/**
	 * The Table of ICON Types
	 */
	public static final String[][] ICON_MapTable = {
			// {后缀名， ICON类型}
			{ "3gp", "icon_video" }, { "aab", "application/x-authoware-bin" },
			{ "aam", "application/x-authoware-map" },
			{ "aas", "application/x-authoware-seg" },
			{ "ai", "application/postscript" }, { "aif", "icon_audio" },
			{ "aifc", "icon_audio" }, { "aiff", "icon_audio" },
			{ "als", "icon_audio" }, { "amc", "application/x-mpeg" },
			{ "ani", "application/octet-stream" },
			{ "apk", "application/vnd.android.package-archive" },
			{ "asc", "icon_text_plain" }, { "asd", "application/astound" },
			{ "asf", "icon_video" }, { "asn", "application/astound" },
			{ "asp", "application/x-asap" }, { "asx", "icon_video" },
			{ "au", "icon_audio" }, { "avb", "application/octet-stream" },
			{ "avi", "icon_video" }, { "awb", "icon_audio" },
			{ "bcpio", "application/x-bcpio" },
			{ "bin", "application/octet-stream" },
			{ "bld", "application/bld" }, { "bld2", "application/bld2" },
			{ "bmp", "icon_bmp" }, { "bpk", "application/octet-stream" },
			{ "bz2", "icon_archive" }, { "c", "icon_c" },
			{ "cpp", "icon_cpp" }, { "cal", "image/x-cals" },
			{ "ccn", "application/x-cnc" }, { "cco", "application/x-cocoa" },
			{ "cdf", "application/x-netcdf" },
			{ "cgi", "magnus-internal/cgi" }, { "chat", "application/x-chat" },
			{ "class", "application/octet-stream" },
			{ "clp", "application/x-msclip" }, { "cmx", "application/x-cmx" },
			{ "co", "application/x-cult3d-object" },
			{ "cod", "image/cis-cod" }, { "cpio", "application/x-cpio" },
			{ "cpt", "application/mac-compactpro" },
			{ "crd", "application/x-mscardfile" },
			{ "csh", "application/x-csh" }, { "csm", "chemical/x-csml" },
			{ "csml", "chemical/x-csml" }, { "css", "icon_css" },
			{ "cur", "application/octet-stream" }, { "dcm", "x-lml/x-evm" },
			{ "dcr", "application/x-director" }, { "dcx", "image/x-dcx" },
			{ "dhtml", "icon_html" }, { "dir", "application/x-director" },
			{ "dll", "application/octet-stream" },
			{ "dmg", "application/octet-stream" },
			{ "dms", "application/octet-stream" }, { "doc", "icon_doc" },
			{ "dot", "icon_doc" }, { "dvi", "application/x-dvi" },
			{ "dwf", "drawing/x-dwf" }, { "dwg", "application/x-autocad" },
			{ "dxf", "application/x-autocad" },
			{ "dxr", "application/x-director" },
			{ "ebk", "application/x-expandedbook" },
			{ "emb", "chemical/x-embl-dl-nucleotide" },
			{ "embl", "chemical/x-embl-dl-nucleotide" },
			{ "eps", "application/postscript" }, { "eri", "image/x-eri" },
			{ "es", "icon_audio" }, { "esl", "icon_audio" },
			{ "etc", "application/x-earthtime" }, { "etx", "text/x-setext" },
			{ "evm", "x-lml/x-evm" }, { "evy", "application/x-envoy" },
			{ "exe", "application/octet-stream" },
			{ "fh4", "image/x-freehand" }, { "fh5", "image/x-freehand" },
			{ "fhc", "image/x-freehand" }, { "fif", "image/fif" },
			{ "fm", "application/x-maker" }, { "fpx", "image/x-fpx" },
			{ "fvi", "icon_video" }, { "gau", "chemical/x-gaussian-input" },
			{ "gca", "application/x-gca-compressed" },
			{ "gdb", "x-lml/x-gdb" }, { "gif", "icon_gif" },
			{ "gps", "application/x-gps" }, { "gtar", "application/x-gtar" },
			{ "gz", "icon_gzip" }, { "h", "icon_c_h" },
			{ "hdf", "application/x-hdf" }, { "hdm", "text/x-hdml" },
			{ "hdml", "text/x-hdml" }, { "hlp", "application/winhlp" },
			{ "hqx", "application/mac-binhex40" }, { "htm", "icon_html" },
			{ "html", "icon_html" }, { "hts", "icon_html" },
			{ "ice", "x-conference/x-cooltalk" }, { "ico", "icon_ico" },
			{ "ief", "icon_image" }, { "ifm", "icon_gif" },
			{ "ifs", "icon_image" }, { "imy", "icon_audio" },
			{ "ins", "application/x-NET-Install" },
			{ "ips", "application/x-ipscript" },
			{ "ipx", "application/x-ipix" }, { "it", "icon_audio" },
			{ "itz", "icon_audio" }, { "ivr", "i-world/i-vrml" },
			{ "j2k", "icon_jpeg" },
			{ "jad", "text/vnd.sun.j2me.app-descriptor" },
			{ "jam", "application/x-jam" }, { "java", "icon_java" },
			{ "jar", "icon_java" }, { "jnlp", "icon_java" },
			{ "jpe", "icon_jpeg" }, { "jpeg", "icon_jpeg" },
			{ "jpg", "icon_jpeg" }, { "jpz", "icon_jpeg" },
			{ "js", "icon_javascript" }, { "jwc", "application/jwc" },
			{ "kjx", "application/x-kjx" }, { "lak", "x-lml/x-lak" },
			{ "latex", "application/x-latex" },
			{ "lcc", "application/fastman" },
			{ "lcl", "application/x-digitalloca" },
			{ "lcr", "application/x-digitalloca" },
			{ "lgh", "application/lgh" },
			{ "lha", "application/octet-stream" }, { "lml", "x-lml/x-lml" },
			{ "lmlpack", "x-lml/x-lmlpack" }, { "lsf", "icon_video" },
			{ "lsx", "icon_video" }, { "lzh", "application/x-lzh" },
			{ "m13", "application/x-msmediaview" },
			{ "m14", "application/x-msmediaview" }, { "m15", "icon_audio" },
			{ "m3u", "icon_playlist" }, { "m3url", "icon_playlist" },
			{ "ma1", "icon_audio" }, { "ma2", "icon_audio" },
			{ "ma3", "icon_audio" }, { "ma5", "icon_audio" },
			{ "man", "application/x-troff-man" },
			{ "map", "magnus-internal/imagemap" },
			{ "mbd", "application/mbedlet" },
			{ "mct", "application/x-mascot" },
			{ "mdb", "application/x-msaccess" }, { "mdz", "icon_audio" },
			{ "me", "application/x-troff-me" }, { "mel", "text/x-vmel" },
			{ "mi", "application/x-mif" }, { "mid", "icon_audio" },
			{ "midi", "icon_audio" }, { "mif", "application/x-mif" },
			{ "mil", "icon_image" }, { "mio", "icon_audio" },
			{ "mmf", "application/x-skt-lbs" }, { "mng", "icon_video" },
			{ "mny", "application/x-msmoney" },
			{ "moc", "application/x-mocha" },
			{ "mocha", "application/x-mocha" }, { "mod", "icon_audio" },
			{ "mof", "application/x-yumekara" },
			{ "mol", "chemical/x-mdl-molfile" },
			{ "mop", "chemical/x-mopac-input" }, { "mov", "icon_video" },
			{ "movie", "icon_video" }, { "mp2", "icon_mp3" },
			{ "mp3", "icon_mp3" }, { "mp4", "icon_video" },
			{ "mpc", "application/vnd.mpohun.certificate" },
			{ "mpe", "icon_video" }, { "mpeg", "icon_video" },
			{ "mpg", "icon_video" }, { "mpg4", "icon_video" },
			{ "mpga", "icon_mp3" },
			{ "mpn", "application/vnd.mophun.application" },
			{ "mpp", "application/vnd.ms-project" },
			{ "mps", "application/x-mapserver" }, { "mrl", "text/x-mrml" },
			{ "mrm", "application/x-mrm" }, { "ms", "application/x-troff-ms" },
			{ "mts", "application/metastream" },
			{ "mtx", "application/metastream" },
			{ "mtz", "application/metastream" },
			{ "mzv", "application/metastream" }, { "nar", "icon_zip" },
			{ "nbmp", "icon_image" }, { "nc", "application/x-netcdf" },
			{ "ndb", "x-lml/x-ndb" }, { "ndwn", "application/ndwn" },
			{ "nif", "application/x-nif" }, { "nmz", "application/x-scream" },
			{ "nokia-op-logo", "icon_image" },
			{ "npx", "application/x-netfpx" }, { "nsnd", "icon_audio" },
			{ "nva", "application/x-neva1" }, { "oda", "application/oda" },
			{ "oom", "application/x-AtlasMate-Plugin" },
			{ "pac", "icon_audio" }, { "pae", "icon_audio" },
			{ "pan", "application/x-pan" }, { "pbm", "icon_bmp" },
			{ "pcx", "icon_image" }, { "pda", "icon_image" },
			{ "pdb", "chemical/x-pdb" }, { "pdf", "icon_pdf" },
			{ "pfr", "application/font-tdpfr" }, { "pgm", "icon_image" },
			{ "pict", "icon_image" }, { "pm", "application/x-perl" },
			{ "pmd", "application/x-pmd" }, { "png", "icon_png" },
			{ "pnm", "icon_image" }, { "pnz", "icon_png" },
			{ "pot", "icon_ppt" }, { "ppm", "icon_image" },
			{ "pps", "icon_ppt" }, { "ppt", "icon_ppt" },
			{ "pqf", "application/x-cprplayer" },
			{ "pqi", "application/cprplayer" }, { "prc", "application/x-prc" },
			{ "proxy", "application/x-ns-proxy-autoconfig" },
			{ "ps", "application/postscript" },
			{ "ptlk", "application/listenup" },
			{ "pub", "application/x-mspublisher" }, { "pvx", "icon_video" },
			{ "qcp", "icon_audio" }, { "qt", "icon_video" },
			{ "qti", "icon_image" }, { "qtif", "icon_image" },
			{ "r3t", "text/vnd.rn-realtext3d" }, { "ra", "icon_audio" },
			{ "ram", "icon_audio" }, { "rar", "icon_rar" },
			{ "ras", "icon_image" }, { "rdf", "application/rdf+xml" },
			{ "rf", "icon_image" }, { "rgb", "icon_image" },
			{ "rlf", "application/x-richlink" }, { "rm", "icon_audio" },
			{ "rmf", "icon_audio" }, { "rmm", "icon_audio" },
			{ "rmvb", "icon_audio" },
			{ "rnx", "application/vnd.rn-realplayer" },
			{ "roff", "application/x-troff" }, { "rp", "icon_image" },
			{ "rpm", "icon_audio" }, { "rt", "text/vnd.rn-realtext" },
			{ "rte", "x-lml/x-gps" }, { "rtf", "icon_text_richtext" },
			{ "rtg", "application/metastream" }, { "rtx", "text/richtext" },
			{ "rv", "icon_video" }, { "rwc", "application/x-rogerwilco" },
			{ "s3m", "icon_audio" }, { "s3z", "icon_audio" },
			{ "sca", "application/x-supercard" },
			{ "scd", "application/x-msschedule" },
			{ "sdf", "application/e-score" },
			{ "sea", "application/x-stuffit" }, { "sgm", "text/x-sgml" },
			{ "sgml", "text/x-sgml" }, { "sh", "application/x-sh" },
			{ "shar", "application/x-shar" }, { "shtml", "icon_html" },
			{ "shw", "application/presentations" }, { "si6", "icon_image" },
			{ "si7", "icon_image" }, { "si9", "icon_image" },
			{ "sis", "application/vnd.symbian.install" },
			{ "sit", "application/x-stuffit" },
			{ "skd", "application/x-Koan" }, { "skm", "application/x-Koan" },
			{ "skp", "application/x-Koan" }, { "skt", "application/x-Koan" },
			{ "slc", "application/x-salsa" }, { "smd", "icon_audio" },
			{ "smi", "application/smil" }, { "smil", "application/smil" },
			{ "smp", "application/studiom" }, { "smz", "icon_audio" },
			{ "snd", "icon_audio" }, { "spc", "text/x-speech" },
			{ "spl", "application/futuresplash" },
			{ "spr", "application/x-sprite" },
			{ "sprite", "application/x-sprite" },
			{ "spt", "application/x-spt" },
			{ "src", "application/x-wais-source" },
			{ "stk", "application/hyperstudio" }, { "stm", "icon_audio" },
			{ "sv4cpio", "application/x-sv4cpio" },
			{ "sv4crc", "application/x-sv4crc" }, { "svf", "icon_image" },
			{ "svg", "icon_image" }, { "svh", "icon_image" },
			{ "svr", "x-world/x-svr" }, { "swf", "icon_flash" },
			{ "swfl", "icon_flash" }, { "t", "application/x-troff" },
			{ "tad", "application/octet-stream" }, { "talk", "text/x-speech" },
			{ "tar", "icon_tar" }, { "taz", "icon_tar" },
			{ "tbp", "application/x-timbuktu" },
			{ "tbt", "application/x-timbuktu" },
			{ "tcl", "application/x-tcl" }, { "tex", "application/x-tex" },
			{ "texi", "application/x-texinfo" },
			{ "texinfo", "application/x-texinfo" }, { "tgz", "icon_tar" },
			{ "thm", "application/vnd.eri.thm" }, { "tif", "icon_tiff" },
			{ "tiff", "icon_tiff" }, { "tki", "application/x-tkined" },
			{ "tkined", "application/x-tkined" }, { "toc", "application/toc" },
			{ "toy", "icon_image" }, { "tr", "application/x-troff" },
			{ "trk", "x-lml/x-gps" }, { "trm", "application/x-msterminal" },
			{ "tsi", "icon_audio" }, { "tsp", "application/dsptype" },
			{ "tsv", "text/tab-separated-values" },
			{ "tsv", "text/tab-separated-values" },
			{ "ttf", "application/octet-stream" },
			{ "ttz", "application/t-time" }, { "txt", "icon_text_plain" },
			{ "ult", "icon_audio" }, { "ustar", "application/x-ustar" },
			{ "uu", "application/x-uuencode" },
			{ "uue", "application/x-uuencode" },
			{ "vcd", "application/x-cdlink" }, { "vcf", "text/x-vcard" },
			{ "vdo", "icon_video" }, { "vib", "icon_audio" },
			{ "viv", "icon_video" }, { "vivo", "icon_video" },
			{ "vmd", "application/vocaltec-media-desc" },
			{ "vmf", "application/vocaltec-media-file" },
			{ "vmi", "application/x-dreamcast-vms-info" },
			{ "vms", "application/x-dreamcast-vms" }, { "vox", "icon_audio" },
			{ "vqe", "icon_audio" }, { "vqf", "icon_audio" },
			{ "vql", "icon_audio" }, { "vre", "x-world/x-vream" },
			{ "vrml", "x-world/x-vrml" }, { "vrt", "x-world/x-vrt" },
			{ "vrw", "x-world/x-vream" }, { "vts", "workbook/formulaone" },
			{ "wav", "icon_wav" }, { "wax", "icon_audio" },
			{ "wbmp", "icon_bmp" }, { "web", "application/vnd.xara" },
			{ "wi", "icon_image" }, { "wis", "application/x-InstallShield" },
			{ "wm", "icon_video" }, { "wma", "icon_wma" },
			{ "wmd", "application/x-ms-wmd" },
			{ "wmf", "application/x-msmetafile" },
			{ "wml", "text/vnd.wap.wml" },
			{ "wmlc", "application/vnd.wap.wmlc" },
			{ "wmls", "text/vnd.wap.wmlscript" },
			{ "wmlsc", "application/vnd.wap.wmlscriptc" },
			{ "wmlscript", "text/vnd.wap.wmlscript" }, { "wmv", "icon_video" },
			{ "wmx", "icon_video" }, { "wmz", "application/x-ms-wmz" },
			{ "wpng", "icon_png" }, { "wpt", "x-lml/x-gps" },
			{ "wri", "application/x-mswrite" }, { "wrl", "x-world/x-vrml" },
			{ "wrz", "x-world/x-vrml" }, { "ws", "text/vnd.wap.wmlscript" },
			{ "wsc", "application/vnd.wap.wmlscriptc" },
			{ "wv", "icon_video" }, { "wvx", "icon_video" },
			{ "wxl", "application/x-wxl" }, { "x-gzip", "application/x-gzip" },
			{ "xar", "application/vnd.xara" }, { "xbm", "icon_bmp" },
			{ "xdm", "application/x-xdma" }, { "xdma", "application/x-xdma" },
			{ "xdw", "application/vnd.fujixerox.docuworks" },
			{ "xht", "icon_xhtml_xml" }, { "xhtm", "icon_xhtml_xml" },
			{ "xhtml", "icon_xhtml_xml" }, { "xla", "icon_xls" },
			{ "xlc", "icon_xls" }, { "xll", "application/x-excel" },
			{ "xlm", "icon_xls" }, { "xls", "icon_xls" },
			{ "xlt", "icon_xls" }, { "xlw", "icon_xls" },
			{ "xm", "icon_audio" }, { "xml", "icon_xml" },
			{ "xmz", "icon_audio" }, { "xpi", "application/x-xpinstall" },
			{ "xpm", "icon_image" }, { "xsit", "icon_xml" },
			{ "xsl", "icon_xml" }, { "xul", "text/xul" },
			{ "xwd", "icon_image" }, { "xyz", "chemical/x-pdb" },
			{ "yz1", "application/x-yz1" }, { "z", "application/x-compress" },
			{ "zac", "application/x-zaurus-zac" }, { "zip", "icon_zip" }, };
}